# 实验一：
# 1：打开图像
# 2：显示图像
# 3：灰度化
# 4：二值化
# 5：储存图像

# ***首先需要引入cv2，用其方法对图像进行操作
import cv2

# ***1打开(读取)图像;(命名图像变量常用img代替image)
img = cv2.imread("img/lena.png")
# 括号中是需要打开的图片的文件路径
# "img/lena.png"也就是当前项目文件夹下的  img文件夹下的 名为 lena.png 的图片
# 当然这个图片是你自己准备的，自己创建一个img文件夹，以后这个项目所有的图片都存放在这个文件夹中

# ***2显示图像
cv2.imshow('the first Lena in this Autumn', img)
# 到这里 show 就可以打开图像了，括号中左边是这个图像窗口的名字(随意取，中文会乱码)，右边就是要打开的图片对象
cv2.waitKey(0)
# 必须加上面这句，数值为0时，图片窗口就会一直保持，数值为1000时，窗口会停留1秒

# ***3灰度化
img0 = cv2.imread("img/lena.png", 0)
# 显示
cv2.imshow('0', img0)
cv2.waitKey(0)


# ***4二值化
# 二值化函数
def threshold_demo(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    print("threshold value %s" % ret)
    # 显示
    cv2.imshow("global_threshold_binary", binary)


# 调用二值化函数，把img传入
threshold_demo(img)
cv2.waitKey(0)

# ***5储存图像
cv2.imwrite('img/saveLenaInChapter1.png', img)
